package cn.ycl.auth.biz.usercenter.service;

import cn.ycl.auth.biz.usercenter.entity.User;
import cn.ycl.entity.LoginParam;
import org.springframework.web.context.request.ServletWebRequest;

import java.util.List;

/**
 * (User)表服务接口
 *
 * @author makejava
 * @since 2020-10-12 14:22:25
 */
public interface UserService {

    /**
     * 通过userId查询单条数据
     *
     * @param userId 主键
     * @return 实例对象
     */
    User queryByUserId(Long userId);


    /**
     * 查询多条数据
     *
     * @param user 查询条件
     * @return 对象列表
     */
    List<User> queryByUser(User user);

    /**
     * 新增数据
     *
     * @param user 实例对象
     * @return 实例对象
     */
    Integer insert(User user);

    /**
     * 修改数据
     *
     * @param user 实例对象
     * @return 实例对象
     */
    Integer update(User user);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Long id);

    /**
     * 通过用户编号删除数据
     *
     * @param userId 主键
     * @return 影响行数
     */
    int deleteByUserId(Long userId);

    /**
     * 登录查找
     *
     * @param loginParam
     * @return
     */
    User login(LoginParam loginParam);

    /**
     * 通过用户名查找用户
     *
     * @param userName 用户名
     * @return 结果
     */
    User queryByUserName(String userName);

    /**
     * 通过token获取用户
     *
     * @param servletWebRequest 用户名
     * @return 结果
     */
    User findUserByToken(ServletWebRequest servletWebRequest);

}